package com.qf.curator;

import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.ZooKeeper;

import java.nio.charset.StandardCharsets;
import java.util.List;

public class CuratorBase {

    private static final String ZKADDR = "10.9.12.200:8601,10.9.12.200:8602,10.9.12.200:8603";

    public static void main(String[] args)  throws  Exception{
//        创建一个curator 工厂   指定连接地址   超时时间
        CuratorFramework curatorFramework = CuratorFrameworkFactory.builder()
                .connectString(ZKADDR)
                .connectionTimeoutMs(5000)//超时时间
//                  失败后会等一秒在重试    最多重试5 次    等于最多连接6 次
                .retryPolicy(new ExponentialBackoffRetry(1000, 5))//如果连接不上 是否重试    怎么重试
                .build();
//      开始连接
        curatorFramework.start();
//      创建路径    可以 多级创建
//        String path = curatorFramework.create().creatingParentsIfNeeded().forPath("/a/b", "yibao".getBytes(StandardCharsets.UTF_8));

//        System.out.println("这是创建的路径--》"+path);

//        获取数据
//        byte[] bytes = curatorFramework.getData().forPath("/a/b");
//
//        System.out.println("获取数据"+new String(bytes));

//      更新数据
//        curatorFramework.setData().forPath("/a/b", "yibaossssss".getBytes(StandardCharsets.UTF_8));
//        byte[] bytes = curatorFramework.getData().forPath("/a/b");
//        System.out.println("获取数据"+new String(bytes));
//
//        curatorFramework.delete().deletingChildrenIfNeeded().forPath("/a/b");



//        String path1= curatorFramework.create().creatingParentsIfNeeded().forPath("/a/b", "yibao".getBytes(StandardCharsets.UTF_8));
//        String path2 = curatorFramework.create().creatingParentsIfNeeded().forPath("/a/c", "yibao".getBytes(StandardCharsets.UTF_8));

        List<String> list = curatorFramework.getChildren().forPath("/");
        list.forEach(System.out::println);

        list.forEach(path->{
            if("a".equals(path)){
                try {
                    curatorFramework.delete().deletingChildrenIfNeeded().forPath("/"+path);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });


        System.in.read();

    }
}
